The present disclosure relates to technology for non-volatile storage.
One type of non-volatile storage is semiconductor memory. For example, non-volatile semiconductor memory is used in solid state drives, mobile computing devices, non-mobile computing devices and other non-volatile memory systems. Typically, the non-volatile memory device has a memory controller which controls data transfers between the non-volatile memory device and a host system over a communication interface. The host system could be computer system, cellular telephone, server, etc. The non-volatile memory device and host system may exchange data over, for example, a Peripheral Computer Interface Express (PCIe) bus. Non-volatile Memory Express (NVMe) is a logical device interface specification for accessing non-volatile storage attached via a PCIe bus. NVMe takes advantage of parallelism offered by semiconductor memory such as, but not limited to, solid state drives.
The host system may have data buffers that are used to store data to be written to the non-volatile memory device, as well as to store data read from the non-volatile memory device. The host system may make data buffer pointers to the data buffers available to the memory controller. Thus, the memory controller may use the data buffer pointers to access data to be written to the non-volatile memory device, as well as to transfer data that is read from the non-volatile memory device into the data buffers.